Software code development efforts result in the delivery of a software product. Once the software product is in operation, defects may be uncovered, operating environments may change, and new needs may surface. Thus, maintenance or support for the software product is needed. The objective of software maintenance is to modify existing software while preserving its integrity.
Software engineers in an organization that develops and maintains software typically make their best effort to share written code features (e.g., individual code units such as functions or modules). Changes to the shared code features may be tracked by “checking in” the changes (e.g., modified files) to a common/centralized revision control system shared by the developers/engineers of the organization. Modified source code may be provided from the revision control system to a code building system that may compile the code and produce build results, which may include executable files. Tests may be carried out by running the executable files under different test conditions.
In organizations having large codebases and a large number of developers, the software code may undergo numerous changes over a relatively short period of time. This high change rate may necessitate code testing in batches (e.g., an integration test). The discovery of a break or failure in a batch of changes may mean that the break could have occurred anywhere in the range of changes tested. Narrowing down a range of changes to a single offending change may be substantially time and resource consuming.